iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
自我挑戰組

System Software Introduction系列 第 28

System Software MISC – Static Link & Dynamic Link​

  • 分享至 

  • xImage
  •  

我們在撰寫程式時經常需要使用其它library提供的function以協助我們的程式完成功能,而程式引用library需要經過linking的過程中,我們今天會介紹linking的方法: static link與dynamic link。

The Comparison of Static Link and Dynamic link

https://ithelp.ithome.com.tw/upload/images/20221009/20152298mxx2Cb4bhL.jpg

Static Link

Build and Execution Flow

  • Software在compilation flow當中,由linker將library複製一份與object files連結打包成executable file
    • 可以用於static link的library稱為static library/statically linked library,Linux系統中的static library副檔名為.a (archive),Windows系統中的static library副檔名為.lib
    • Static link產生的executable file會包含library在內,相對於dynamic link產生的executable file size較大
  • Software執行時,executable file由OS載入RAM內,library也隨著executable file一起被載入

Pros

Software build的時候只需要確定static library的版本正確,user就可以直接執行不需要擔心library有問題。

Cons

  • Executable file size大,需要佔據更多storage和RAM
  • 重複使用的library會被重複載入RAM,耗費更多RAM放一樣的內容
  • 要更新software使用的library時,需要重新build或link software才可以把新的library放進executable

Dynamic Link

Build and Execution flow

  • Software在dynamic link的compilation flow當中不直接link library,而是由linker創造一張import directory表描述有哪些library是executable file執行時時需要被載入的
    • Dynamic link需要OS額外的支援才可以使用
    • 可以用於dynamic link的library稱為shared library/dynamically linked library,Linux系統中的shared library副檔名為.so (shared object),Windows系統中的shared library副檔名為.dll (dynamic-link library)
    • Dynamic link產生的executable file不會包含library在內,相對於static link產生的executable file size較小
  • Software執行時,executable file由OS載入RAM內,之後OS依照import directory尋找需要的shared libraries是否已經被載入過,若尚尚未載入者則將libraries載入

Pros

  • Executables的size較小,不會佔據過多storage
  • 已經載入過的shared library不需要再次載入,可以省下重複載入的library的時間與RAM
  • Library更新後,executable不需要重新build,只需要更新shared library就可以在載入shared library使用新的library

Cons

  • Shared library不存在或版本有誤的時候,會讓executable執行發生錯誤,這種錯誤對user來說很難直接找到方法解決
  • 需要支援dynamic link的OS才可以執行,環境受限

上一篇
System Software MISC – Benchmark​
下一篇
System Software MISC – Perf & PMU/HPM​
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言